#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "MSTK.h"
#include <mpi.h>

int main(int argc, char *argv[]) {
  int i, j, idx, ok, dim;
  char mname[256],filename[256];
  char buf[256], attname[256];
  char subfilename[256];
  Mesh_ptr mesh, recv_mesh, *submeshes;
  RepType rtype;
  /* default divide into two parts */
  int num = 2;
  int rank;
  double dt, T;
  MVertex_ptr mv;
  /* Initialize MSTK - Always do this even if it does not seem to
     matter in this version of MSTK */
  MSTK_Init();  
  /* command line parameter */
  MPI_Init(&argc,&argv);
  MPI_Comm_size(MPI_COMM_WORLD,&num);
  MPI_Comm_rank(MPI_COMM_WORLD,&rank);
  
  /* Load the mesh */
  strcpy(mname,argv[1]);
  strcpy(filename,mname);
  strcat(filename,".mstk");
  dim = atoi(argv[3]);    
  /* master process read in and divide the mesh */
  if(rank == 0) { 
    mesh = MESH_New(UNKNOWN_REP);
    ok = MESH_InitFromFile(mesh,filename);
    if (!ok) {
      fprintf(stderr,"Cannot open input file %s\n\n\n",filename);
      exit(-1);
    }
    fprintf(stdout,"mstk mesh %s read in successfully\n",filename);

    MAttrib_ptr attrib;
    strcpy(attname,"indicater");
    attrib = MAttrib_New(mesh,attname,INT,MVERTEX);
    T = MPI_Wtime();
    while(mv = MESH_Next_Vertex(mesh,&idx)) 
      for(j = 0; j < 5000; j++)
	;
    printf("time %lf on rank %d\n",MPI_Wtime()-T,rank);
    /* Partition the mesh*/
  }
  MPI_Finalize();
  return 1;
}

